package com.fqdf.framework.android.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class JsonUtil {

    private JsonUtil() {

    }

    /**
     * javabean对象转化成为jsonobject对象
     *
     * @param javaObj java对象
     * @return jsonobject
     */
    public static JSONObject javaObjToJsonObj(Object javaObj) {
        if (javaObj == null) {
            return null;
        }

        return (JSONObject) JSON.toJSON(javaObj);
    }

    /**
     * jsonObj对象转化成为map对象
     *
     * @param jsonObj jsonObj对象
     * @return map对象数据
     */
    public static Map<String, Object> jsonObjToMap(JSONObject jsonObj) {
        if (jsonObj == null) {
            return null;
        }

        return jsonObj.toJavaObject(Map.class);

    }

    /**
     * map 类型转化，只是为了服务器请求提供的工具方法，
     *
     * @param originMap 原始map
     * @return 转化后的map
     */
    public static Map<String, String> mapObjToMapStr(Map<String, Object> originMap) {
        Map<String, String> result = new HashMap<>();
        if (!CheckLogicUtil.isEmpty(originMap)) {
            for (Map.Entry<String, Object> item : originMap.entrySet()) {
                Object obj = item.getValue();
                if (obj == null) {
                    result.put(item.getKey(), null);
                } else if (obj instanceof String) {
                    result.put(item.getKey(), (String) obj);
                } else {
                    result.put(item.getKey(), obj.toString());
                }
            }
        }

        return result;
    }

    /**
     * 把java对象转化成为map对象
     *
     * @param obj 原始java对象
     * @return
     */
    public static Map<String, String> javaObjToMap(Object obj) {
        if (obj == null) {
            return null;
        }

        return mapObjToMapStr(jsonObjToMap(javaObjToJsonObj(obj)));
    }
}
